/**
 * 依赖jquery 自动填表
 * version 0.8
 * 
 */
// F12 调用这句话可智能填表
// $.getScript("/sgpt/util/autotest.js",function(i){alert("开始测试！");startTest();});
// 随机生成 a-b之间的数字
function randInt(a, b) {
	return a + Math.floor(Math.random() * (1 + b - a));
}
// 返回a-b位的数字
function randNumber(a, b) {
	// 首位不为0
	var str = "" + randInt(1, 9);
	for (var i = 0; i < randInt(a, b) - 1; i++) {
		str += randInt(0, 9);
	}
	return str;
}

// 将数字转换成字符,是否忽略大小写
function char(code, ignoreCase) {
	return String.fromCharCode(ignoreCase && Math.random() > 0.5 ? toOtherCase(code)
					: code);
}
// 返回a-b位的字母
function randChar(a, b, charA, charB) {
	if (charA == null || charB == null) {
		charA = 97;
		charB = 122;
	}
	// 首位不为0
	var str = ""
	for (var i = 0; i < randInt(a, b); i++) {
		str += char(randInt(charA, charB), 1);
	}
	return str;
}

// 转换大小写
function toOtherCase(code) {
	return code
			+ (97 <= code && code <= 122 ? -32 : 65 <= code && code <= 90 ? 32
					: 0);
}
// 返回至多max位的字符串
function trimStr(str, max) {
	return (str + "").substring(0, max);
}

var str = "测试-" + randChar(1, 3) + ":";
var index = 0;
function getLastIframe() {
	var ifr, temp;
	var win = gobj_win.getTopmostWindow(true);
	for (;;) {
		if (ifr == null) {
			ifr = $(win).contents().find("iframe");
		} else {
			temp = ifr;
			ifr = $(ifr).contents().find("iframe");
			if (ifr.length == 0) {
				break;
			}
		}
	}
	return temp;
}

var ff = getLastIframe();
// checkbox
function fillCheckBox() {
	ff.contents().find("input[type='checkbox']").each(
			function(index, ele) {
				if ($(this).attr("disabled") != null
						|| $(this).attr("readonly") != null) {
					return true;
				}
				if (Math.round(Math.random())) {
					$(this).click();
				}
			})
}
// radio
function fillRadio() {
	ff.contents().find("input[type='radio']").each(
			function(index, ele) {
				if ($(this).attr("disabled") != null
						|| $(this).attr("readonly") != null) {
					return true;
				}
				if (Math.round(Math.random())) {
					$(this).click();
				}
			})
}
// input
function fillText() {
	ff.contents().find("input[type='text'],textarea").each(
			function(index, ele) {
				// 不操作disabled 和readonly || $(this).attr("readonly") != null
				if ($(this).attr("disabled") != null) {
					return true;
				}
				// 单独对时间进行处理
				var name = $(this).attr("name");
				if (name != null
						&& name.toLocaleUpperCase().search("TIME") != -1) {
					$(this).val(
							"2014-0" + randInt(1, 9) + "-" + randInt(10, 28)
									+ " 09:00");
					return true;
				}
				// 随机数据
				var dataType = {
					"*" : str + index++,
					"n" : randNumber(0, 9),
					"n8-13" : randNumber(8, 13),
					"*n8-13" : randNumber(8, 13),
					"s" : str + index++,
					"s6-18" : randChar(6, 18),
					"p" : randNumber(6, 6),
					"m" : "186"+randNumber(8, 8),
					"e" : "Tester@wo.com.cn",
					"url" : char("www.baidu.com", 1),
					"tel" : randNumber(8, 8),
					"4D" : (randNumber(4, 8) / 10000).toFixed(4),
					"2D" : (randNumber(2, 4) / 100).toFixed(2),
					"*2D" : (randNumber(2, 4) / 100).toFixed(2)
				};
				var max = $(this).attr("maxlength");
				if ($(this).attr("datatype") != null) {
					var reg = dataType[$(this).attr("datatype")];
					if (max != null) {
						reg = trimStr(reg, max);
					}
					$(this).val(reg);
				} else {
					if (max != null) {
						str = trimStr(str + index++, max)
						$(this).val(str);
					} else {
						$(this).val(str + index++);
					}
				}

			})
}
// select
function fillSelect() {
	ff.contents().find("select").each(
			function(index, ele) {
				if ($(this).attr("disabled") != null
						|| $(this).attr("readonly") != null) {
					return true;
				}
				$(ele).find("option").each(function(i, item) {
					if ($(this).val() != '' && $(this).val() != 0) {
						$(this).parent().val($(this).val());
						return false;
					}
				});
			})
}

var startTest = function() {
	ff = getLastIframe();
	fillCheckBox();
	fillRadio();
	fillText();
	fillSelect();
}
